home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Applications 1996 May / SGI IRIX 6.2 Applications 1996 May.iso / dist / impr_dev.idb / usr / impressario / src / libspool / SLErrors.c.z / SLErrors.c
C/C++ Source or Header  |  1996-05-06  |  6KB  |  178 lines

  1. /**************************************************************************
  2.  *                                      *
  3.  *           Copyright (c)    1991 Silicon Graphics, Inc.          *
  4.  *            All Rights Reserved                    *
  5.  *                                      *
  6.  *       THIS    IS UNPUBLISHED PROPRIETARY SOURCE CODE OF SGI          *
  7.  *                                      *
  8.  * The copyright notice above does not evidence any actual of intended      *
  9.  * publication of such source code, and is an unpublished work by Silicon *
  10.  * Graphics, Inc. This material contains CONFIDENTIAL INFORMATION that is *
  11.  * the property of Silicon Graphics, Inc. Any use, duplication or      *
  12.  * disclosure not specifically authorized by Silicon Graphics is strictly *
  13.  * prohibited.                                  *
  14.  *                                      *
  15.  * RESTRICTED RIGHTS LEGEND:                          *
  16.  *                                      *
  17.  * Use, duplication or disclosure by the Government is subject to      *
  18.  * restrictions as set forth in subdivision (c)(1)(ii) of the Rights in      *
  19.  * Technical Data and Computer Software clause at DFARS 52.227-7013,      *
  20.  * and/or in similar or successor clauses in the FAR, DOD or NASA FAR      *
  21.  * Supplement. Unpublished - rights reserved under the Copyright Laws of  *
  22.  * the United States. Contractor is SILICON GRAPHICS, INC., 2011 N.      *
  23.  * Shoreline Blvd., Mountain View, CA 94039-7311              *
  24.  **************************************************************************
  25.  *
  26.  * File: SLErrors.c
  27.  *
  28.  * Description: Contains error messages and error handling code for the
  29.  *    libspool library.
  30.  *
  31.  **************************************************************************/
  32.  
  33.  
  34. #ident "$Revision: 1.4 $"
  35.  
  36.  
  37. #include <stdio.h>
  38. #include <string.h>
  39. #include <unistd.h>
  40. #include "spoolI.h"
  41.  
  42.  
  43. /* Global Error Variable */
  44.  
  45. int SLerrno = SL_NOERROR;
  46.  
  47. /* Error List  - error codes are indices into this list */
  48.  
  49. char *SLerrlist[] = {
  50.     /* 0 */        "no error detected",
  51.     /* 1 */        "error while finding spoolers",
  52.     /* 2 */        "SL_SPOOLER_NONE specified as default",
  53.     /* 3 */        "no spooling systems available",
  54.     /* 4 */        "spooling system specified is not available",
  55.     /* 5 */        "Invalid or missing filename specified",
  56.     /* 6 */        "invalid number of copies to print specified",
  57.     /* 7 */        "invalid job copy/link parameter specified",
  58.     /* 8 */        "no default printer registered with spooler",
  59.     /* 9 */        "spooling system error",
  60.     /* 10 */    "no job ID specified for cancellation",
  61.     /* 11 */    "invalid spooling function specified",
  62.     /* 12 */    "invalid spooling function state specified",
  63.     /* 13 */    "could not get spooler function state",
  64.     /* 14 */    "invalid printer structure specified",
  65.     /* 15 */    "error during remote execution (rsh)",
  66.     /* 16 */    "root privilege required for this function",
  67.     /* 17 */    "invalid mail parameter specified",
  68.     /* 18 */    "invalid file descriptor specified",
  69.     /* 19 */    "invalid buffer or amount specified",
  70.     /* 20 */    "invalid printer name specified",
  71.     /* 21 */    "invalid printer in class",
  72.     /* 22 */    "unable to create temporary file",
  73.     /* 23 */    "socket error",
  74.     /* 24 */    "printer does not support fast job submittal",
  75.     /* 25 */    "function requires System V spooler be selected",
  76.     /* 26 */    "cannot save options file",
  77. };
  78. int SLnerr = sizeof(SLerrlist)/sizeof(char*);
  79.  
  80. /* Message catalog lookup table. The error code selects the corresponding
  81.    message number.
  82. */
  83.  
  84. static char *SLmsgnum[] = {
  85.     /* 0 */        _SGI_LIBSPOOL_NOERROR,
  86.     /* 1 */        _SGI_LIBSPOOL_ERR_FIND_SPOOLER,
  87.     /* 2 */        _SGI_LIBSPOOL_ERR_SPOOLER_NONE,
  88.     /* 3 */        _SGI_LIBSPOOL_ERR_NO_SPOOLERS,
  89.     /* 4 */        _SGI_LIBSPOOL_ERR_SPOOLER_UNKNOWN,
  90.     /* 5 */        _SGI_LIBSPOOL_ERR_NO_FILENAME,
  91.     /* 6 */        _SGI_LIBSPOOL_ERR_NUM_COPIES,
  92.     /* 7 */        _SGI_LIBSPOOL_ERR_JOB_COPY,
  93.     /* 8 */        _SGI_LIBSPOOL_ERR_NO_DEF_PRINTER,
  94.     /* 9 */        _SGI_LIBSPOOL_ERR_SPOOLER_ERROR,
  95.     /* 10 */    _SGI_LIBSPOOL_ERR_NO_JOBID,
  96.     /* 11 */    _SGI_LIBSPOOL_ERR_BAD_FUNCTION,
  97.     /* 12 */    _SGI_LIBSPOOL_ERR_BAD_STATE,
  98.     /* 13 */    _SGI_LIBSPOOL_ERR_NO_STATE,
  99.     /* 14 */    _SGI_LIBSPOOL_ERR_BAD_PRINTER_STRUCT,
  100.     /* 15 */    _SGI_LIBSPOOL_ERR_REMOTE,
  101.     /* 16 */    _SGI_LIBSPOOL_ERR_PRIVILEGE,
  102.     /* 17 */    _SGI_LIBSPOOL_ERR_MAIL,
  103.     /* 18 */    _SGI_LIBSPOOL_ERR_BAD_FD,
  104.     /* 19 */    _SGI_LIBSPOOL_ERR_BAD_BUF,
  105.     /* 20 */    _SGI_LIBSPOOL_ERR_BAD_PRINTER_NAME,
  106.     /* 21 */    _SGI_LIBSPOOL_ERR_BAD_CLASS_MEMBER,
  107.     /* 22 */    _SGI_LIBSPOOL_ERR_NO_TEMP_FILE,
  108.     /* 23 */    _SGI_LIBSPOOL_ERR_BAD_SOCKET,
  109.     /* 24 */    _SGI_LIBSPOOL_ERR_NO_FAST_JOB,
  110.     /* 25 */    _SGI_LIBSPOOL_ERR_NO_SYSV,
  111.     /* 26 */    _SGI_LIBSPOOL_ERR_SAVE_OPTIONS,
  112. };
  113.  
  114.  
  115. /**************************************************************************
  116.  *
  117.  * Function: SLPerror
  118.  *
  119.  * Description: Similar to the C function perror, this function produces
  120.  *    a message on the standard error output, describing the last error
  121.  *    encountered during an SL function call. The arguement s is printed
  122.  *    first, then a colon and a blank, then the error message and a
  123.  *    new-line. If s="" then the colon and blank are not printed.
  124.  *
  125.  *    The function uses the global variable SLerrno as an index into a
  126.  *    global list of error strings, SLErrlist. The values for SLerrno
  127.  *    are contained in spool.h. The global SLnerr contains the number of
  128.  *    error strings in SLerrlist.
  129.  *
  130.  * Parameters: 
  131.  *    s (I) - User supplied error string to prepend on SL error string
  132.  *
  133.  * Return: none
  134.  *
  135.  **************************************************************************/
  136.  
  137. void SLPerror(const char *s)
  138. {
  139.     if (s && strlen(s))                /* Check for NULL string */
  140.         (void)fprintf(stderr, "%s: ",s);    /* User string + ':' */
  141.     (void)fprintf(stderr, "%s\n", SLErrorString(SLerrno));
  142. }
  143.  
  144.  
  145. /**************************************************************************
  146.  *
  147.  * Function: SLErrorString
  148.  *
  149.  * Description: Returns the error string corresponding to the specified
  150.  *    error code. If the code is not in the range of valid SL error
  151.  *    codes a string with the error code number is returned.
  152.  *
  153.  * Parameters: 
  154.  *    err (I) - SL error code
  155.  *
  156.  * Return: String corresponding to the specified error code.
  157.  *
  158.  **************************************************************************/
  159.  
  160. char *SLErrorString(int err)
  161. {
  162.     static char buf[128];
  163.  
  164.     /*
  165.      * If this is a valid SL error code return the
  166.      * standard error string.
  167.      */
  168.     if (err >= 0 && err < SLnerr)
  169.     return (gettxt(SLmsgnum[err], SLerrlist[err]));
  170.  
  171.     /*
  172.      * If the code is invalid return a string with the error code
  173.      */
  174.     (void)sprintf(buf, gettxt(_SGI_LIBSPOOL_UNKNOWN_ERROR,
  175.                         "error code %d"), err);
  176.     return buf;
  177. }
  178.